#ifndef __GfxDriver_WGL_WGLCubeTexture_h__
#define __GfxDriver_WGL_WGLCubeTexture_h__

#include "GfxDriver/Texture.h"
#include "GfxDriver/WGL/GLInclude.h"

namespace Orca {

	class GfxDriver;

	//--------------------------------------------------------------------------
	class WGLCubeTexture : public TextureCube {

	public:
		static WGLCubeTexture* create(
			  GfxDriver *gfxDriver
			, uint32 size
			, PixelFormat format);

		WGLCubeTexture(
			  GfxDriver *gfxDriver
			, uint32 size
			, PixelFormat format
			, GLuint glHandle);

		virtual ~WGLCubeTexture();

		virtual uint32 getSize() const;
		virtual PixelFormat getPixelFormat() const;

		virtual unsigned int getAPIHandle() const;
		virtual unsigned int getAPITexType() const;

		virtual void* requestUpload(CubeMapSide side);
		
		virtual bool uploadToGPU(bool autoGenMipmap);

	private:
		GfxDriver *mGfxDriver;
		uint32 mSize;
		PixelFormat mFmt;
		uint8 *mData;
		CubeMapSide mCurrSide;
		GLuint mGLHandle;

	};

}

#endif	// __GfxDriver_WGL_WGLCubeTexture_h__